package org.eiahe.hr.attendance.service;

import org.eiahe.hr.attendance.domain.vo.SyncLogVo;

import java.time.LocalDate;

/**
 * 钉钉考勤同步Service接口
 *
 * @author zhangnn
 */
public interface IDingTalkSyncService {

    /**
     * 同步钉钉考勤数据
     *
     * @param startDate 开始日期
     * @param endDate   结束日期
     * @param isManual  是否手动同步
     * @return 同步日志
     */
    SyncLogVo syncAttendanceRecords(LocalDate startDate, LocalDate endDate, boolean isManual);

    /**
     * 自动同步(定时任务调用)
     * 默认同步前一天的数据
     */
    void autoSync();

    /**
     * 重新同步失败的记录
     *
     * @param logId 同步日志ID
     * @return 是否成功
     */
    Boolean retrySyncByLogId(Long logId);


    /**
     * 同步OA请假/调休数据
     *
     * @param startDate 开始日期
     * @param endDate   结束日期
     * @param isManual  是否手动同步
     * @return 同步日志
     */
    SyncLogVo syncLeaveRecords(LocalDate startDate, LocalDate endDate, boolean isManual);

    /**
     * 自动同步(定时任务调用)
     * 默认同步前一天的数据
     */
    void autoLeaveSync();

    /**
     * 重新同步失败的记录
     *
     * @param logId 同步日志ID
     * @return 是否成功
     */
    Boolean retryLeaveSyncByLogId(Long logId);

}
